import Vue from 'vue'
import Router from 'vue-router'
import Layout from '@/layout'
import adminRouter from './modules/admin'

Vue.use(Router)

/**
 * 注意 侧边栏只有当children.length>=1时才显示
 *
 * hidden: true                   是否显示在侧边栏显示路由 默认false
 * alwaysShow: true               是否始终展开显示根菜单 默认false
 * redirect: noRedirect           设置noRedirect则面包屑导航中点击后不会重定向
 * name:'router-name'             设置路由的名字 <keep-alive>标签会使用到 必须填写
 * meta : {
    roles: ['admin',...]          设置可以访问路由的角色
    title: 'title'                设置侧边栏和面包屑导航中显示的名称
    icon: 'svg-name'/'el-icon-x'  设置路由的图标 填写assets/icons/svg下的图标名称或者element-ui的图标名称
    breadcrumb: false             是否在面包屑导航中显示 默认true
    activeMenu: '/example/list'   设置侧边栏高亮显示设置的路径
  }
 */

/**
 * 静态路由 所有角色都可以访问
 */
export const staticRoutes = [
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },
  {
    path: '/404',
    component: () => import('@/views/error/404'),
    hidden: true
  },
  {
    path: '/401',
    component: () => import('@/views/error/401'),
    hidden: true
  },
  {
    path: '/',
    component: Layout,
    redirect: '/home',
    children: [{
      path: 'home',
      name: 'Home',
      component: () => import('@/views/home/index'),
      meta: { title: '首页', icon: 'dashboard' }
    }]
  },
  {
    path: '/info',
    component: Layout,
    children: [
      {
        path: 'info',
        name: 'Info',
        component: () => import('@/views/info/index'),
        meta: { title: '个人信息', icon: 'form' }
      }
    ]
  },
  // 404页面必须放在最后
  { path: '*', redirect: '/404', hidden: true }
]

/**
 * 动态路由 根据用户角色动态加载
 */
export const asyncRoutes = [
  ...adminRouter
]
const createRouter = () => new Router({
  scrollBehavior: () => ({ y: 0 }),
  routes: staticRoutes
})

const router = createRouter()

/**
 * 重置路由 删除动态路由
 */
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher
}

export default router
